#include<iostream>
#include<vector>
using namespace std;
const int N = 100;
const int inf = 0x3f3f3f3f;
class node
{
public:
	int left;//左边界
	int right;//右边界
};
int a[N];    
node b[N];//b是区间数组
void build(int left, int right, int p)
{
	if (left >= right) {

		b[p].left = left;
		b[p].right = left;   //左边界等于有边界 
		return;
	}
	b[p].left = left; b[p].right = right;    

	int mid = left + ((right - left) >> 1);//区重点划分区间

	build(left, mid,p<<1);//左区间2*p
	build(mid + 1, right, (p<<1)|1);  //右区间2*p+1
}

int main()
{
	int n; cin >> n;
	build(1, n, 1);//区间1-n

	for (int i = 1; i <= 30; i++)
		cout << b[i].left << "-->"<<b[i].right <<"->"<<i<< endl;    
	return 0;
}

